package estados.arestas;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;

import Classes.Aresta;
import Classes.ArestaGUI;
import estados.interfaces.EstadoAresta;
import estados.interfaces.EstadoVertice;
import estados.vertices.EstadoVerticeEdicaoSemAnimacaoSelecionado;

public class EstadoArestaEdicaoSemAnimacao implements
		EstadoAresta {
	private Aresta refAresta ;
	
	@Override
	public void desenhar(Graphics2D g2) {
		EstadoVertice EstadoV1 = refAresta.getV1().getVerticeGrafico().getEstadoDaPinturaAtual() ;
		EstadoVertice EstadoV2 = refAresta.getV2().getVerticeGrafico().getEstadoDaPinturaAtual() ;
		
		if (EstadoV1 instanceof EstadoVerticeEdicaoSemAnimacaoSelecionado) {
			if (EstadoV2 instanceof EstadoVerticeEdicaoSemAnimacaoSelecionado) {
				g2.setPaint(Color.RED) ;
			}
			else {
				g2.setPaint(new GradientPaint((int)refAresta.getV1().getVerticeGrafico().getCentro().getX(),(int)refAresta.getV1().getVerticeGrafico().getCentro().getY(),Color.RED, (int)refAresta.getV2().getVerticeGrafico().getCentro().getX(),(int)refAresta.getV2().getVerticeGrafico().getCentro().getY(),(new Color(100,0,0)))) ;	//seta o degrade de v1 para v2
			}
		}
		else {
			if (EstadoV2 instanceof EstadoVerticeEdicaoSemAnimacaoSelecionado) {
				g2.setPaint(new GradientPaint((int)refAresta.getV2().getVerticeGrafico().getCentro().getX(),(int)refAresta.getV2().getVerticeGrafico().getCentro().getY(),(new Color(100,0,0)), (int)refAresta.getV1().getVerticeGrafico().getCentro().getX(),(int)refAresta.getV1().getVerticeGrafico().getCentro().getY(),Color.RED)) ;	//seta o degrade de v1 para v2
			}
			else {
				g2.setPaint(Color.BLACK) ;
			}
		}
		
		ArestaGUI.setLinhaAresta(refAresta.getV1().getVerticeGrafico().getCentro(), refAresta.getV2().getVerticeGrafico().getCentro()) ;
		g2.setStroke(new BasicStroke(2)) ;
		g2.draw(ArestaGUI.getLinhaAresta()) ;
		g2.setStroke(new BasicStroke(1)) ;
		
	}

	@Override
	public void setAresta(Aresta a) {
		this.refAresta = a ;
	}

	@Override
	public Aresta getAresta() {
		return this.refAresta ;
	}	
	
	public String toString() {
		return "EstadoArestaEdicaoSemAnimacao" ;
	}
}